package com.lovo.frame;

import com.lovo.pojo.UsersDO;
import com.lovo.service.UserService;
import com.lovo.service.impl.UserServiceImpl;
import com.lovo.util.DBUtil;
import com.lovo.util.Util;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Zhuanzhang extends JPanel implements ActionListener {
    private Icon sureBtnImg = Util.getIcon("/image/buttonSure.jpg");
    private JTextField jTextField;
    private JTextField jTextField1;
    private JButton sure;
    private ATM frame;
    private int index = -1;
    private UserService userService = new UserServiceImpl();

    public Zhuanzhang(ATM frame) {
        this.frame = frame;
        this.setLayout(null);
        JLabel textlabel1 = new JLabel("转账账户：");
        textlabel1.setBounds(150, 150, 100, 30);
        this.add(textlabel1);

        //转账账户
        this.setOpaque(false);
        jTextField = new JTextField();
        jTextField.setBounds(250, 150, 250, 30);
        this.add(jTextField);

        JLabel textlabel2 = new JLabel("转账金额：");
        textlabel2.setBounds(150, 200, 100, 30);
        this.add(textlabel2);

        //转账金额
        this.setOpaque(false);
        jTextField1 = new JTextField();
        jTextField1.setBounds(250, 200, 250, 30);
        this.add(jTextField1);


        this.setOpaque(false);
        sure = new JButton(sureBtnImg);
        sure.setBounds(200, 320, 100, 20);
        this.add(sure);
        sure.addActionListener(this);
    }


    @Override
    public void actionPerformed(ActionEvent e) {
//        boolean flag = false;
//        if (e.getSource() == sure) {
//            for (int i = 0; i < frame.getUsers().size(); i++) {
//                if (jTextField.getText().equals(frame.getUsers().get(i).getUserName())) {
//                    flag = true;
//                    index = i;
//                    if (jTextField.getText().equals(frame.getUsers().get(frame.getNum()).getUserName())) {
//                        JOptionPane.showMessageDialog(this, "不能给自己转账");
//                        break;
//                    } else {
//                        if (Double.valueOf(jTextField1.getText()) > frame.getUsers().get(frame.getNum()).getBlance()) {
//                            JOptionPane.showMessageDialog(this, "当前余额不足");
//                            break;
//                        } else {
//                            double money1 = frame.getUsers().get(index).getBlance() + Double.valueOf(jTextField1.getText());
//                            double money2 = frame.getUsers().get(frame.getNum()).getBlance() - Double.valueOf(jTextField1.getText());
//                            frame.getUsers().get(frame.getNum()).setBlance(money2);
//                            frame.getUsers().get(index).setBlance(money1);
//                            String sql = "UPDATE t_users SET u_blance="+frame.getUsers().get(frame.getNum()).getBlance()+" where u_name='"+frame.getUsers().get(frame.getNum()).getUserName()+"'";
//                            Util.insert(sql);
//                            String sql1 = "UPDATE t_users SET u_blance="+frame.getUsers().get(index).getBlance()+" where u_name='"+frame.getUsers().get(index).getUserName()+"'";
//                            Util.insert(sql1);
//                            frame.switchPanel("菜单");
//                            break;
//                        }
//                    }
//                }
//            }
//            if (!flag) {
//                JOptionPane.showMessageDialog(this, "查无此人");
//            }
//        }

        if (e.getSource() == sure) {


            try {
                // 获取输入的对方账号
                String otherAccount = jTextField.getText();
                //获取输入的钱
                double blance = Double.parseDouble(jTextField1.getText());
                userService.transferAccounts(otherAccount, blance, frame.getLoginUser().getId());
                JOptionPane.showMessageDialog(this, "转账成功");
            } catch (Exception exception) {
                JOptionPane.showMessageDialog(this, exception.getMessage());
            }
//            double blance = 0;
//            try {
//                // 获取输入的转账金额
//                blance = Double.parseDouble(jTextField1.getText());
//            }catch(NumberFormatException ex){
//                JOptionPane.showMessageDialog(this,"转账金额必须为数字，并不能为空");
//                return;
//            }
//
//            // 当期登录的账户
//            DBUtil db = new DBUtil();
//            UsersDO loginUser = db.getById(frame.getLoginUser().getId());
//            UsersDO otherUser = db.getByUsername(otherAccount);
////            ArrayList<User> users = frame.getUsers();
////
////            boolean isExist = false;
////            for(int i = 0;i < users.size();i++){
////                if(users.get(i).getAccount().equals(otherAccount)){
////                    isExist = true;
////                    otherUser = users.get(i);
////                    break;
////                }
////            }
//            // 判断账号是否存在
//            if(otherUser == null){
//                JOptionPane.showMessageDialog(this,"查无此人");
//                return;
//            }
//            // 判断是否转给自己
//            if(loginUser.getUserName().equals(otherAccount)){
//                JOptionPane.showMessageDialog(this,"不能转给自己");
//                return;
//            }
//            // 判断余额是否足够
//            if(blance > loginUser.getBlance()){
//                JOptionPane.showMessageDialog(this,"余额不足");
//                return;
//            }
//            // 当期账户扣钱
//            loginUser.setBlance(loginUser.getBlance() - blance);
//            // 对方账户加钱
//            otherUser.setBlance(otherUser.getBlance() + blance);
//            db.update(loginUser,otherUser);

            //事务面向对象方法
//            try{
//                db.getConnection();
//                db.setAutoCommit(false);
//                db.update(loginUser);
//                db.update(otherUser);
//                db.commit();
//                JOptionPane.showMessageDialog(this,"转账成功");
//            }catch(Exception e1){
//                db.rollback();
//                JOptionPane.showMessageDialog(this,"转账失败");
//            }finally {
//                db.close();
//            }
            frame.switchPanel("菜单");
        } else if (e.getSource() == sure) {
            frame.switchPanel("菜单");

        }
    }
}
